package demo3;

/*
链接：https://ac.nowcoder.com/acm/problem/26226
来源：牛客网

mari每天都非常shiny。她的目标是把正能量传达到世界的每个角落！
有一天，她得到了一个仅由小写字母组成的字符串。
她想知道，这个字符串有多少个"shy"的子序列？
（所谓子序列的含义见样例说明）
输入描述:
第一行一个正整数n，代表字符串的长度。（1≤n≤300000）
第二行为一个长度为n，仅由小写字母组成的字符串。
输出描述:
一个正整数，代表子序列"shy"的数量。

 */

//解法一

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String str = in.next();
        long[] s = new long[n];
        long[] h = new long[n];
        long[] y = new long[n];
        if(str.charAt(0) == 's') {
            s[0] = 1;
        }
        for(int i = 1; i<n; i++) {
            char ch = str.charAt(i);
            if(ch == 's') {
                s[i] = s[i-1] + 1;
            }else{
                s[i] = s[i-1];
            }
                
            if(ch == 'h') {
                h[i] = h[i-1] + s[i-1];
            }else{
                h[i] = h[i-1];
            } 
            
            if(ch == 'y') {
                y[i] = y[i-1] + h[i-1];
            }else {
                y[i] = y[i-1];
            }
        }
        System.out.println(y[n-1]);
    }
}


//解法二 空间优化版本
class Main1{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String str = in.next();
        long s = 0, h = 0, y = 0;
        if(str.charAt(0) == 's') {
            s = 1;
        }
        for(int i = 1; i<n; i++) {
            char ch = str.charAt(i);
            if(ch == 's') {
                s ++;
            }
            if(ch == 'h') {
                h += s;
            }
            if(ch == 'y') {
                y += h;
            }
        }
        System.out.println(y);
    }
}